/*axios中文说明文档*/
//https://www.kancloud.cn/yunye/axios/234845

import { isJSON } from '../tool/tool';

import { Spin } from 'iview';

import 'iview/dist/styles/iview.css';

import axios from 'axios';

import Vue from 'vue';

// import qs from 'qs'

Vue.prototype.$axios = axios;

// const serverurl =
//   //"https://52.83.72.175:3014"
//   "https://hc-test.local.zco:3014"

/**/
//axios.defaults.baseURL = serverurl;

/*请求超时时间*/
axios.defaults.timeout = 60000;

/* `url` 是用于请求的服务器 URL*/
// axios.defaults.url = '/api'

/*
* // 用于请求之前对请求数据进行操作
  // 只用当请求方法为‘PUT’，‘POST’和‘PATCH’时可用
  // 最后一个函数需return出相应数据
  // 可以修改headers
  */
// axios.defaults.transformRequest = function(data,headers){
//     console.log("请求的参数")
//     console.log(JSON.stringify(data));
//     console.log(qs.stringify(data));
//     console.log(typeof data)
//     console.log(typeof JSON.stringify(data))
//     return qs.stringify(data);
// }

//`transformResponse` 在传递给 then/catch 前，允许修改响应数据
axios.defaults.transformResponse = function(data) {
	// console.log(data);
	// console.log(typeof data)
	if (isJSON(data)) {
		return JSON.parse(data);
	}
	return data;
};

// `withCredentials` 表示跨域请求时是否需要使用凭证 默认false
axios.defaults.withCredentials = false;

/*定义允许的响应内容的最大尺寸*/
axios.defaults.maxContentLength = 200000;

/*request拦截器*/
axios.interceptors.request.use(
	function(config) {
		let token = window.store.state.token;
		if (token) {
			config.headers['x-access-token'] = token;
			config.headers['Content-Type'] = 'application/json';
			return config;
		}
	},
	function(error) {
		return Promise.reject(error);
	}
);

/*response拦截器*/
axios.interceptors.response.use(
	function(resp) {
		console.log('response interceptors');
		console.log(resp);
		Spin.hide();
		return resp;
	},
	function(error) {
		console.log('response interceptors error');
		// console.log(error);
		Spin.hide();
		if (error && error.response && error.response.status === 404) {
			return Promise.reject(error.response.data);
		} else {
			return Promise.reject(error);
		}
	}
);
